using System.ComponentModel;
using System.Drawing;
using System.Windows.Forms;

namespace PluginFrame
{
	/// <summary>
	/// 
	/// </summary>
	public interface IApplication : IServiceContainer
	{
		ToolStripPanel LeftToolPanel { get; }

		ToolStripPanel RightToolPanel { get; }

		ToolStripPanel TopToolPanel { get; }

		ToolStripPanel BottomToolPanel { get; }

		MenuStrip MainMenu { get; }

		ToolStrip MainToolStrip { get; }

		StatusStrip StatusBar { get; }

		string Title { get; set; }

		bool TopMostFormExist { get; set; }

		Size FormSize();

		void CloseApplication();

		string GetAssemblyPath();

		string GetCurrentDataFileFolder();

		string GetResourceFolder();

		void ActivateChildForm(Form childForm, string keyFileName);

		Form GetActiveChildForm();

		Rectangle ApplicationClientRectangle();

		void SetCursor(Cursor cursor);

		IPlugin LoadFormPlugin(string pluginFileName, string experimentName);

		void SetMainFormEnable(bool isEnable);

		void ShowWaitHintForm(BackgroundWorker bk, string label);

		void AddExperimentTab(IPcrExperiment pcrExperiment);

		void RemoveExperimentTab(IPcrExperiment pcrExperiment);

		void RemoveExperimentTab(int index);

		void SetTabCloseEnabled(bool isEnabled);

		bool ChangeExperimentTabName(string tabText, string tabKey, bool isNewExperiment);

		bool UpdateExperimentTabName(string newTabText, string newTabKey, string originalTabKey);

		bool FindExperimentTabNameExist(string tabText);
	}
}
